/*
		C语言字符函数的练习

		夏思成

		2024年3月23日

		西科大15号公寓楼
*/

 //所有字符函数都要包含头文件<ctype.h>

 

//int iscntrl(int c)      
//只要参数是控制字符，就返回非0值，否之返回0
//实际上传给iscntrl的是该字符的ASCII码值

//int main()
//{
//	int ret1 = iscntrl('\t');//'\t'是控制字符，所以返回非0值
//	int ret2 = iscntrl('x');//'x'不是控制字符，所以返回0
//	printf("%d %d\n", ret1,ret2);
//	return 0;
//}

//int isspace(int c)       只要参数是空白字符就返回非0值，否之返回0
//int main()
//{
//	int ret1 = isspace('\n');//'\n'换行符是空白字符，所以会返回非0值
//	int ret2 = isspace('a');//'a'是可打印字符，不是空白字符，所以返回0
//	printf("%d %d\n", ret1,ret2);
//	return 0;
//}


//int isdigit(int c)   参数属于0~9，则返回非0值，不属于返回0
//int main()
//{
//	int ret1 = isdigit('0');
//	int ret2 = isdigit('z');
//	printf("%d %d\n", ret1, ret2);
//	return 0;
//}



//int main()
//{
//	char arr[] = "i love china";
//	size_t len = strlen(arr);
//	int i = 0;
//	for (i = 0; i < len; i++)
//	{
//		if (islower(arr[i]))//如果是小写字母则返回非0，并转化为大写字母
//		{
//			arr[i] -= 32;
//		}
//	}
//	printf("%s", arr);
//	return 0;
//}




//int main()
//{
//	char arr[] = "I LOVE CHINA FOREVER";
//	size_t len = strlen(arr);
//	int i = 0;
//	for (i = 0; i < len; i++)
//	{
//		if (isupper(arr[i]))//如果是大写字母则返回非0，并转化为小写字母
//		{
//			arr[i] += 32;
//		}
//	}
//	printf("%s", arr);
//	return 0;
//}

//int isxdigit(int c)
//参数是十六进制数，包括十进制数，a~f，A~F，如果属于这些，则返回非0，否则返回0

//int main()
//{
//	int ret1 = isxdigit('0');
//	int ret2 = isxdigit('a');
//	int ret3 = isxdigit('\n');
//	printf("%d %d %d\n", ret1, ret2, ret3);
//	return 0;
//}




//int ispunct(int c)
//参数是标点符号就返回非0，否则返回0
//int main()
//{
//	int ret1 = ispunct(',');
//	int ret2 = ispunct('.');
//	int ret3 = ispunct('\'');
//	printf("%d %d %d\n", ret1, ret2, ret3);
//	return 0;
//}


//int isgraph(int c)
//只要参数是可以打印的任何字符都返回非0，如果不可打印则返回0
//不可打印就是空白字符，或者控制字符
//int main()
//{
//	int ret1 = isgraph(',');
//	int ret2 = isgraph(' ');
//	printf("%d %d\n", ret1, ret2);
//	return 0;
//}

//int isprint(int c)
//参数只要为任何可打印字符(图形字符和空白字符)，都返回非0值，控制字符返回0
//int main()
//{
//	int ret1 = isprint(' ');
//	int ret2 = isprint('a');
//	int ret3 = isprint('\n');
//	printf("%d %d% d\n", ret1, ret2, ret3);
//	return 0;
//}


//字符转换函数

#include <stdio.h>
#include <ctype.h>
#include <string.h>


//toupper函数
//将传进去的参数转化为大写字母，如果本来就是大写字母则不改变
int main()
{
	char arr[] = "hello world";
	size_t len = strlen(arr);
	int i = 0;
	for (i = 0; i < len; i++)
	{
		if (islower(arr[i]))//判断是否为大写字母
		{
			arr[i] = toupper(arr[i]);//将小写字母转化为大写字母，相当于完成了-32的操作
		}
	}
	printf("%s\n", arr);
	return 0;
}

////tolower函数
////将传递的参数转化为小写字母，如果传的本来就是小写字母则不变
//int main()
//{
//	char arr[] = "HELLO WORLD";
//	size_t len = strlen(arr);
//	int i = 0;
//	for (i = 0; i < len; i++)
//	{
//		if (isupper(arr[i]))//判断是否为大写字母
//		{
//			arr[i] = tolower(arr[i]);//将大写字母转化为小写字母，相当于完成了+32的操作
//		}
//	}
//	printf("%s\n", arr);
//	return 0;
//}